package org.example.day05;

import java.util.*;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO+
 * <div>  XX市机场停放了多架飞机，每架飞机都有自己的航班号CA3385，CZ6678，SC6508等，航班号的前2个大写字母(或数字）代表航空公司的缩写，后面4个数字代表航班信息。但是XX市机场只有一条起飞用跑道，调度人员需要安排目前停留在机场的航班有序起飞。为保障航班的有序起飞，调度员首先按照航空公司的缩写（航班号前2个字母）对所有航班进行排序，同一航空公司的航班再按照航班号的后4个数字进行排序最终获得安排好的航班的起飞顺序。请编写一段代码根据输入的航班号信息帮助调度员输出航班的起飞顺序。 </div> <div>  说明： </div> <div>  1、航空公司缩写排序按照从特殊符号$ &amp; *, 0~9，A~Z排序； </div>
 *
 * XX市机场停放了多架飞机，每架飞机都有自己的航班号CA3385，CZ6678，SC6508等，航班号的前2个大写字母(或数字）代表航空公司的缩写，后面4个数字代表航班信息。
 * 但是XX市机场只有一条起飞用跑道，调度人员需要安排目前停留在机场的航班有序起飞。为保障航班的有序起飞，调度员首先按照航空公司的缩写（航班号前2个字母）对所有航班进行排序，
 * 同一航空公司的航班再按照航班号的后4个数字进行排序最终获得安排好的航班的起飞顺序。请编写一段代码根据输入的航班号信息帮助调度员输出航班的起飞顺序。
 * 说明：
 * 1、航空公司缩写排序按照从特殊符号$ & *, 0~9，A~Z排序
 * @date 2024/3/11 15:22
 */
public class test098 {
    // 定义一个函数来对航班号进行排序
    public static String[] sortFlights(String[] flights) {
        // 使用Comparator来定义排序规则
        Arrays.sort(flights, new Comparator<String>() {
            @Override
            public int compare(String flight1, String flight2) {
                // 首先按照航空公司的缩写进行排序
                int cmp = flight1.substring(0, 2).compareTo(flight2.substring(0, 2));
                if (cmp != 0) {
                    return cmp;
                }
                // 如果航空公司的缩写相同，则按照航班号的数字进行排序
                int flightNum1 = Integer.parseInt(flight1.substring(2));
                int flightNum2 = Integer.parseInt(flight2.substring(2));
                return Integer.compare(flightNum1, flightNum2);
            }
        });
        return flights;
    }

    public static void main(String[] args) {
        // 输入航班信息
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        // 对输入的航班信息进行去除两端的空白字符处理
        String[] inputFlights = input.trim().split(",");
        inputFlights = Arrays.stream(inputFlights)
                .map(String::trim)
                .toArray(String[]::new);
        // 调用排序函数获取排序后的航班信息
        String[] sortedFlights = sortFlights(inputFlights);
        // 输出排序后的航班起飞顺序，用逗号连接
        System.out.println(String.join(",", sortedFlights));
    }
}
